'use strict'

import Axios from 'axios'
import qs from 'qs'
// import Router from '@/router/index'
// 配置axios基本项
const axios = Axios.create({
  baseURL: '/', // 因为本地做了反向代理
  timeout: 1500,
  responseType: 'json',
  withCredentials: true, // 是否允许带cookie这些
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8'
  }
})
// 合并请求
let needLoading = 0
// 设置全局请求拦截器:主要是鉴权
axios.interceptors.request.use(
  config => {
    if (config.isShowLoading && needLoading === 0) {
      // 显示loading
    }
    needLoading++
    // 若是有做鉴权token , 就给头部带上token
    if (localStorage.token) {
      config.headers.Authorization = localStorage.token
    } else { // 否则去登录
      // router.push({
      //   path: '/login',
      //   querry: {redirect: router.currentRoute.fullPath}// 从哪个页面跳转
      // })
    }
    return config
  },
  error => {
    // 可以找一个UI组件,此处暂时写成alert
    alert(error)
    return Promise.reject(error)
  }
)
// 设置全局响应拦截器
axios.interceptors.response.use(
  res => {
    if (needLoading <= 0) return
    needLoading--
    if (needLoading === 0) {
      // 关闭loading
    }
    // 对响应数据做些事
    if (res) { // 响应有数据且状态码正确(与后台商议返回的数据格式)
      return res
    } else {
      return res// 如果状态码不对,如后台系统报错 返回500
    }
  },
  error => {
    // 返回 响应失败
    let errorInfo = error
    return Promise.reject(errorInfo)
  }
)

export default{
  Mg (url, type, content, isShowLoading) {
    return new Promise((resolve, reject) => {
      axios({
        method: type,
        url: url,
        data: qs.stringify(content),
        isShowLoading: isShowLoading
      }).then((resp) => {
        // if (resp.status === 0) {
        //   typeof resolve === 'function' && resolve(resp)
        // } else {
        //   typeof reject === 'function' && reject(resp)
        // }
        typeof resolve === 'function' && resolve(resp)
      }).catch((error) => {
        // 出错提示信息展示用alert
        alert(error)
        typeof reject === 'function' && reject(error)
      })
    })
  }
}

// function handleAjax (url, type, content) {
//   return axios({
//     method: type,
//     url: url,
//     data: qs.stringify(content)
//   }).then((resp) => {
//     handleSuccess(resp)
//   }).then((error) => {
//     handleError(error)
//   })
// }
// 成功回调
// function handleSuccess (resp) {
//   console.log('http ' + resp)
//   return resp
// }
// 失败回调
// function handleError (errorMsg) {
//   return errorMsg
// }
